package com.mi.million.common.util;


import org.springframework.util.AntPathMatcher;
import org.springframework.util.PathMatcher;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 验证工具类
 *
 * @author 王永吉
 * @date 2019/8/21
 */
public class ValidateKit {

    /**
     * 账号限制
     * 数字或字母8-32位
     */
    public static boolean isAccount(String str) {
        String regex = "^[a-zA-Z0-9]{4,32}$";
        return match(regex, str);
    }

    /**
     * 是否为手机号
     */
    public static boolean isPhone(String str) {
        String regex = "^[1][3,4,5,7,8,9][0-9]{9}$";
        return match(regex, str);
    }

    /**
     * 是否为电话号
     */
    public static boolean isTelPhone(String str) {
        String regex = "^[1][3,4,5,7,8,9][0-9]{9}$";
        return match(regex, str);
    }

    /**
     * 是否为图片
     */
    public static boolean isImage(String str) {
        String regex = "(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$";
        return match(regex, str);
    }

    /**
     * 是否为视频
     */
    public static boolean isVideo(String str) {
        String regex = "(.*)\\.(mp4|rmvb|flv|mpeg|avi)$";
        return match(regex, str);
    }

    /**
     * @param regex 正则表达式字符串
     * @param str   要匹配的字符串
     * @return 如果str 符合 regex的正则表达式格式,返回true, 否则返回 false;
     */
    private static boolean match(String regex, String str) {
        if (isBlank(str)) {
            return false;
        }
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        return matcher.matches();
    }

    /**
     * 是否为空
     */
    public static boolean isBlank(Object obj) {
        if (obj == null) {
            return true;
        }
        if (obj instanceof String) {
            return obj.toString().replace(" ", "").trim().equals("");
        }
        return false;
    }

    /**
     * 是否为非空
     */
    public static boolean isNotBlank(Object obj) {
        return !isBlank(obj);
    }

    /**
     * 路由是否匹配
     */
    public static boolean matchPath(String pattern, String uri) {
        PathMatcher matcher = new AntPathMatcher();
        return matcher.match(pattern, uri);
    }

}
